#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

using namespace std;

int main()
{
//  cout << "lisan";
//  sleep(3);
//  exit(11); // _exit(11);
//  return 0;
    
    pid_t pd = fork();

    if (pd < 0)
    {
      // 程序失败
      perror("fork ");
    }else if(pd == 0)
    {
      // 子进程
      int a = 5;
      while(a--)
      {
      printf("是子进程：getpid:%d,getppid:%d\n",getpid(), getppid());
      sleep(1);
      } 
      exit(10);
    }else{
      // 父进程
      printf("是父进程：getpid:%d,getppid:%d\n",getpid(), getppid());
      int status = 0;
      pid_t ret = waitpid(pd, &status, 0);
      if (ret > 0)
      {
      cout <<"错误信号：" << ((status >> 7) & 0x7f) << endl;
      cout << "子进程接收成功, status:" << ((status >> 8) & 0xff) << endl;
      }




     // while(1)
     // {
     // sleep(1);
     // printf("是父进程：getpid:%d,getppid:%d\n",getpid(), getppid());
     // }   
    }
}




